<template>
  <div class="menu-bar-container">
    <!-- logo -->
    <div
      class="logo"
      :style="{'background-color':'#fff'}"
      :class="collapse?'menu-bar-collapse-width':'menu-bar-width'"
      @click="go"
    >
      <img v-show="collapse" src="@/assets/logo.png" />
      <img v-show="!collapse" class="logo_1" src="@/assets/logo_1.png" alt="">
    </div>
    <!-- 导航菜单 -->
    <el-menu
      ref="navmenu"
      background-color="#304156"
      text-color="#fff"
      :active-text-color="themeColor"
      default-active="1"
      :class="collapse?'menu-bar-collapse-width':'menu-bar-width'"
      :collapse="collapse"
      :collapse-transition="false"
      :unique-opened="true "
      @open="handleopen"
      @close="handleclose"
      @select="handleselect"
    >
      <!-- 导航菜单树组件，动态加载菜单 -->
      <menu-tree v-for="item in navTreeChange" :key="item.id" :menu="item"></menu-tree>
    </el-menu>
  </div>
</template>l

<script>
import { mapState } from 'vuex'
import MenuTree from '@/components/MenuTree/index'

function tree (ary) {
  if (ary.length <= 0) {
    return []
  }
  ary.forEach((item, index) => {
    if (item.hidden === 0) {
      // 是否隐藏 0是隐藏，1不隐藏
      ary.splice(index, 1)
    }
    if (item.children.length > 0) {
      tree(item.children)
    }
  })

  return ary
}

export default {
  components: {
    MenuTree
  },
  computed: {
    ...mapState({
      appName: state => state.app.appName,
      themeColor: state => state.app.themeColor,
      collapse: state => state.app.collapse,
      navTree: state => state.menu.navTree
    }),
    // 改变菜单数据
    navTreeChange () {
      return this.$store.getters.getTree
    },
    mainTabs: {
      get () {
        return this.$store.state.tab.mainTabs
      },
      set (val) {
        this.$store.commit('updateMainTabs', val)
      }
    },
    mainTabsActiveName: {
      get () {
        return this.$store.state.tab.mainTabsActiveName
      },
      set (val) {
        this.$store.commit('updateMainTabsActiveName', val)
      }
    }
  },
  watch: {
    $route: 'handleRoute'
  },
  created () {
    this.handleRoute(this.$route)
  },
  methods: {
    go () {
      this.$router.push('/')
      this.$store.commit('setCollapse', true)
    },
    handleopen () {
      console.log('handleopen')
    },
    handleclose () {
      console.log('handleclose')
    },
    handleselect (a, b) {
      console.log('handleselect')
    },
    // 路由操作处理
    handleRoute (route) {
      // tab标签页选中, 如果不存在则先添加
      var tab = this.mainTabs.filter(item => item.name === route.name)[0]
      if (!tab) {
        tab = {
          name: route.name,
          title: route.meta.title,
          icon: route.meta.icon
        }
        this.mainTabs = this.mainTabs.concat(tab)
      }
      this.mainTabsActiveName = tab.name
      // 切换标签页时同步更新高亮菜单
      if (this.$refs.navmenu != null) {
        this.$refs.navmenu.activeIndex = '' + route.meta.index
        this.$refs.navmenu.initOpenedMenu()
      }
    }
  }
}
</script>

<style scoped lang="scss">
  .menu-bar-container {
    position: fixed;
    top: 0px;
    left: 0;
    bottom: 0;
    z-index: 1020;

    .el-menu {
      position: absolute;
      top: 60px;
      bottom: 0px;
      text-align: left;
      // background-color: #2968a30c;
    }

    .logo {
      position: absolute;
      top: 0px;
      height: 60px;
      line-height: 60px;
      background: #545c64;
      cursor: pointer;

      img {
        width: 40px;
        height: 40px;
        border-radius: 0px;
        margin: 10px 10px 10px 10px;
        float: left;
      }

      .logo_1 {
        margin: 0;
        width: 200px;
        height: 60px;
      }

      div {
        font-size: 25px;
        color: white;
        text-align: left;
        padding-left: 20px;

      }

    }

    .menu-bar-width {
      width: 200px;
    }

    .menu-bar-collapse-width {
      width: 65px;
    }
  }

</style>
